package ar.com.larreta.vista.client;

import ar.com.larreta.intercambio.client.Pedido;
import ar.com.larreta.intercambio.client.PedidoDeLista;

import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.form.Field;

public class ListaDesplegable extends CampoEntrada {

	private ComboBox campoDesplegable;
	
	public ListaDesplegable(String descripcion, Object valor, PedidoDeLista pedido, String nombreLista) {
		super(descripcion, valor);
		inicializarCampoDesplegable(pedido, nombreLista);
	}

	public ListaDesplegable(String descripcion, Object valor, PedidoDeLista pedido, String nombreLista, Integer tamanioDescripcion, Integer tamanioCampo) {
		super(descripcion, valor, tamanioDescripcion, tamanioCampo);
		inicializarCampoDesplegable(pedido, nombreLista);
	}

	private void inicializarCampoDesplegable(PedidoDeLista pedido,
			String nombreLista) {
		campoDesplegable.setStore(new ListStore(new BaseListLoader(new ListaDesplegableProxy(pedido, nombreLista))));
		getProxy().setListaDesplegable(this);
		campoDesplegable.setEditable(Boolean.FALSE);
		campoDesplegable.setTypeAhead(true);  
		campoDesplegable.setTriggerAction(TriggerAction.ALL);
		campoDesplegable.setDisplayField(Pedido.DESCRIPCION);
		campoDesplegable.setValueField(Pedido.ID);
	}

	public ComboBox getCampoDesplegable() {
		return campoDesplegable;
	}

	public void setCampoDesplegable(ComboBox campoDesplegable) {
		this.campoDesplegable = campoDesplegable;
	}
	
	
	
	@Override
	public Field getCampo() {
		if(campoDesplegable==null){
			campoDesplegable = new ComboBox();
		}
		return campoDesplegable;
	}

	public BaseListLoader getLoader(){
		if (campoDesplegable.getStore()!=null){
			return (BaseListLoader) campoDesplegable.getStore().getLoader();
		}
		return null;
	}
	
	public ListaDesplegableProxy getProxy(){
		if (getLoader()!=null){
			return (ListaDesplegableProxy) getLoader().getProxy();
		}
		return null;
	}

	public PedidoDeLista getPedidoDeLista(){
		if (getProxy()!=null){
			return getProxy().getPedido();
		}
		return null;
	}

}
